﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Business = SoTaiChinh.Library.Business;
using Entity = SoTaiChinh.Library.Entity;
using Common = SoTaiChinh.Library.Common;
using System.IO;

public partial class templates_admin_usercontrols_resources : System.Web.UI.UserControl
{
    Entity.TaiNguyen clsE_TaiNguyen = new SoTaiChinh.Library.Entity.TaiNguyen();
    Business.TaiNguyen clsB_TaiNguyen = new SoTaiChinh.Library.Business.TaiNguyen();
    Entity.ChuDe clsE_ChuDe = new SoTaiChinh.Library.Entity.ChuDe();
    Business.ChuDe clsB_ChuDe = new SoTaiChinh.Library.Business.ChuDe();   
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Alert.Load_DropDownList(ddlChuDe, clsB_ChuDe.SelectChuDeTaiNguyen(), "TenChuDe", "IdChuDe", "------Chọn chủ đề------");
            dtResource = clsB_TaiNguyen.Select(clsE_TaiNguyen);
            LoadAllResource();
        }
    }
    #region Phân trang bằng PagedDataSource
    private static DataTable dtResource = new DataTable();
    //Khái báo các property trang, chỉ số đầu, chỉ số cuối
    private int CurrentPage
    {
        get
        {
            object objPage = ViewState["_CurrentPage"];

            int _CurrentPage = 0;
            if (objPage == null)
            {
                _CurrentPage = 0;
            }
            else
            {
                _CurrentPage = (int)objPage;
            }
            return _CurrentPage;
        }
        set { ViewState["_CurrentPage"] = value; }
    }
    private int fistIndex
    {
        get
        {

            int _FirstIndex = 0;
            if (ViewState["_FirstIndex"] == null)
            {
                _FirstIndex = 0;
            }
            else
            {
                _FirstIndex = Convert.ToInt32(ViewState["_FirstIndex"]);
            }
            return _FirstIndex;
        }
        set { ViewState["_FirstIndex"] = value; }
    }
    private int lastIndex
    {
        get
        {
            int _LastIndex = 0;
            if (ViewState["_LastIndex"] == null)
            {
                _LastIndex = 0;
            }
            else
            {
                _LastIndex = Convert.ToInt32(ViewState["_LastIndex"]);
            }
            return _LastIndex;
        }
        set { ViewState["_LastIndex"] = value; }
    }

    PagedDataSource _PageDataSource = new PagedDataSource();

    //Load dữ liệu và phân trang cho dữ liệu
    private void BindItemsList(DataTable dt)
    {
        DataTable dataTable = dt;
        _PageDataSource.DataSource = dataTable.DefaultView;
        _PageDataSource.AllowPaging = true;
        _PageDataSource.PageSize = 3;
        _PageDataSource.CurrentPageIndex = CurrentPage;
        ViewState["TotalPages"] = _PageDataSource.PageCount;

        this.lblPageInfo.Text = "Trang " + (CurrentPage + 1) + " của " + _PageDataSource.PageCount;
        this.lbtnPrevious.Enabled = !_PageDataSource.IsFirstPage;
        this.lbtnNext.Enabled = !_PageDataSource.IsLastPage;
        this.lbtnFirst.Enabled = !_PageDataSource.IsFirstPage;
        this.lbtnLast.Enabled = !_PageDataSource.IsLastPage;

        this.rptDanhSachTaiNguyen.DataSource = _PageDataSource;
        this.rptDanhSachTaiNguyen.DataBind();
        this.doPaging();
    }
    //Phân trang
    private void doPaging()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("PageIndex");
        dt.Columns.Add("PageText");
        fistIndex = CurrentPage - 5;
        if (CurrentPage > 5)
        {
            lastIndex = CurrentPage + 5;
        }
        else
        {
            lastIndex = 10;
        }
        if (lastIndex > Convert.ToInt32(ViewState["TotalPages"]))
        {
            lastIndex = Convert.ToInt32(ViewState["TotalPages"]);
            fistIndex = lastIndex - 10;
        }
        if (fistIndex < 0)
        {
            fistIndex = 0;
        }
        for (int i = fistIndex; i < lastIndex; i++)
        {
            DataRow dr = dt.NewRow();
            dr[0] = i;
            dr[1] = i + 1;
            dt.Rows.Add(dr);
        }
        this.dlPaging.DataSource = dt;
        this.dlPaging.DataBind();
    }

    //Trang dầu tiên
    protected void lbtnFirst_Click(object sender, EventArgs e)
    {
        CurrentPage = 0;
        BindItemsList(dtResource);
    }
    //Trang sau trang đang hiển thị
    protected void lbtnPrevious_Click(object sender, EventArgs e)
    {
        CurrentPage -= 1;
        BindItemsList(dtResource);
    }
    //Trang tiếp theo trang đang hiển thị
    protected void lbtnNext_Click(object sender, EventArgs e)
    {
        CurrentPage += 1;
        BindItemsList(dtResource);
    }
    //Trang cuối
    protected void lbtnLast_Click(object sender, EventArgs e)
    {
        CurrentPage = (Convert.ToInt32(ViewState["TotalPages"]) - 1);
        BindItemsList(dtResource);
    }
    //Hàm sự kiện dlPaging
    protected void dlPaging_ItemCommand(object source, DataListCommandEventArgs e)
    {
        if (e.CommandName.Equals("Paging"))
        {
            CurrentPage = Convert.ToInt32(e.CommandArgument.ToString());
            BindItemsList(dtResource);
        }
    }
    protected void dlPaging_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        LinkButton lnkbtnPage = (LinkButton)e.Item.FindControl("lnkbtnPaging");
        if (lnkbtnPage.CommandArgument.ToString() == CurrentPage.ToString())
        {
            lnkbtnPage.Enabled = false;
            //lnkbtnPage.Style.Add("fone-size", "14px");
            //lnkbtnPage.Font.Bold = true;
            lnkbtnPage.CssClass = "active";
        }
    }
    #endregion
    private void LoadAllResource()
    {
        if (dtResource.Rows.Count == 0)
        {
            BindItemsList(dtResource);
            PhanTrang.Visible = false;
            msgNoRows.Style.Add("display", "block");
        }
        else if (dtResource.Rows.Count > 0 && dtResource.Rows.Count <= 3)
        {
            BindItemsList(dtResource);
            PhanTrang.Visible = false;
        }
        else if (dtResource.Rows.Count > 3)
        {
            BindItemsList(dtResource);
            PhanTrang.Visible = true;
        }
    }
    protected void btnThem_Click(object sender, EventArgs e)
    {
        Response.Redirect("~/admin/addresources.aspx?action=add&info=0");
    }
    protected void btnLamMoi_Click(object sender, EventArgs e)
    {
        dtResource = clsB_TaiNguyen.Select(clsE_TaiNguyen);
        LoadAllResource();
    }
    protected void rptDanhSachTaiNguyen_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        try
        {
            //Nếu click nút xóa từ danh sách
            if (e.CommandName == "xoa")
            {                
                bool delete = false;
                string filename = "";
                string hinhanh = "";
                clsE_TaiNguyen.IdTaiNguyen = Convert.ToInt32(e.CommandArgument.ToString());
                DataTable dt = clsB_TaiNguyen.SelectPrimarykey(clsE_TaiNguyen);
                filename = dt.Rows[0]["TenFile"].ToString();
                hinhanh = dt.Rows[0]["HinhAnh"].ToString();
                File.Delete(Server.MapPath("~/uploads/resourcesupload/" + filename));
                File.Delete(Server.MapPath("~/uploads/resourcesupload/" + hinhanh));
                delete = clsB_TaiNguyen.Delete(clsE_TaiNguyen);
                if (delete)
                { 
                    Alert.Show("Xóa tập tin thành công!!!");
                    dtResource = clsB_TaiNguyen.Select(clsE_TaiNguyen);
                    LoadAllResource();
                }
                else
                { Alert.Show("Xóa tập tin không thành công !!!"); }                
            }
            if (e.CommandName == "statusupdate")
            {
                try
                {
                    bool trangthai = false;
                    clsE_TaiNguyen.IdTaiNguyen = Convert.ToInt32(e.CommandArgument.ToString());
                    trangthai = clsB_TaiNguyen.Update_TrangThai(clsE_TaiNguyen);
                    if (trangthai)
                    {
                        Alert.Show("Cập nhật trạng thái thành công !!!");
                        dtResource = clsB_TaiNguyen.Select(clsE_TaiNguyen);
                        LoadAllResource();
                    }
                    else
                    { Alert.Show("Cập nhật trạng thái không thành công !!!"); }
                }
                catch
                { }               
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    protected void btnTim_Click(object sender, EventArgs e)
    {
        clsE_TaiNguyen.TenFile = txtTuKhoa.Text;
        clsE_TaiNguyen.IdChuDe = Convert.ToInt32(ddlChuDe.SelectedValue);
        if (txtTuKhoa.Text != "Tìm kiếm tài nguyên" && ddlChuDe.SelectedValue == "0")
        {
            TimKiem(0);
        }
        else if (txtTuKhoa.Text == "Tìm kiếm tài nguyên" && ddlChuDe.SelectedValue != "0")
        {
            TimKiem(1);
        }
        else if (txtTuKhoa.Text != "Tìm kiếm tài nguyên" && ddlChuDe.SelectedValue != "0")
        {
            TimKiem(2);
        }
        else
        {
            Alert.Show("Bạn chưa nhập từ khóa hoặc chưa chọn chủ đề cần tìm"); 
            dtResource = clsB_TaiNguyen.Select(clsE_TaiNguyen);
            LoadAllResource();
        }
    }
    private void TimKiem(int Opt)
    {
       clsE_TaiNguyen.Option = Opt;
       dtResource= clsB_TaiNguyen.SelectTimKiem(clsE_TaiNguyen);       
       LoadAllResource();
    }   
}
